#pragma once
#include "BondInfo.h"
#include "qbprotocol/include/SSFilters.h"
////////////////////////////////////////////
//增续发券
class S_BONDLIB_EXPORT CABSBondInfo
{
public:
	CABSBondInfo();
	CABSBondInfo(const CABSBondInfo& one);
	~CABSBondInfo();

	enum Common{
		COMMON_ALL = 0,
		COMMON_CLO,
		COMMON_CONSUMER,//个人消费贷款
		COMMON_RMBS,	//住房抵押贷款
		COMMON_CARD,	//信用卡分期
		COMMON_AUTO,	//汽车贷款
		COMMON_NUM
	};

	enum BaseType{
		BASETYPE_ALL = 0,
		BASETYPE_AUTO,		//汽车贷款
		BASETYPE_CARD,		//信用卡分期
		BASETYPE_CLO,		//CLO
		BASETYPE_RMBS,		//住房抵押贷款
		BASETYPE_CONSUMER,	//个人消费贷款
		BASETYPE_BAD,		//不良资产
		BASETYPE_LEASE,		//金融租赁
		BASETYPE_SMALL,		//小微贷款
		BASETYPE_RAILWAY,	//铁路专项信贷
		BASETYPE_CONSTRUCTION,//设备按揭贷款
		BASETYPE_OTHER,		//其他
		BASETYPE_NUM
	};

	enum TrancheClass{
		TRANCHECLASS_ALL = 0,
		TRANCHECLASS_FIRST,		//优先级
		TRANCHECLASS_SECOND,	//次优级
		TRANCHECLASS_SUB,		//次级
		TRANCHECLASS_NUM
	};

	enum Coupon{
		COUPON_ALL=0,		//全部
		COUPON_FIXED,		//固息
		COUPON_DEPO_1Y ,	//DEPO_1Y
		COUPON_LRB_1Y,		//LRB_1Y
		COUPON_LRB_5Y,		//LRB_5Y
		COUPON_LRB_1Y_3Y,	//LRB_1Y_3Y
		COUPON_LRB_1Y_5Y,	//LRB_1Y_5Y
		COUPON_LPR_1Y,		//LPR_1Y
		COUPON_LPR_5Y,		//LPR_5Y
		COUPON_OTHER,		//其他
		COUPON_NUM
	};
public:
	void Clear();//初始化数据

	void SetBondKey(const char* sBondKey);				//m_sBondKey;
	void SetBaseType(const char* sBaseType, const char* sNPL);		//m_sBaseType;		//基础资产
	void SetTrancheClass(const char* sTrancheClass);	//m_sTrancheClass;	//产品结构
	void SetSeriesName(const char* sSeriesName);		//m_sSeriesName;	//系列
	void SetIssuerCode(const char* sIssuerCode);		//m_sIssuerCode;	//发行人

	const char* GetBondKey();		//m_sBondKey;
	const char* GetBaseType() const;		//m_sBaseType;		//基础资产
	const char* GetTrancheClass() const;	//m_sTrancheClass;	//产品结构
	const char* GetSeriesName() const;	//m_sSeriesName;	//系列
	const char* GetIssuerCode() const;	//m_sIssuerCode;	//发行人

	//////////////////////////////////////////////////////////////////////
	bool	CheckCommon(const BLHCONDITION& condStr) const;
	bool	CheckBaseType(const BLHCONDITION& Cond) const;
	bool	CheckBaseType(const char* sType) const;
	bool	CheckTrancheClass(const BLHCONDITION& Cond) const;
	bool	CheckSeries(const BLHCONDITION& Cond) const;
	bool	CheckIssuer(const BLHCONDITION& condStr) const;
private:
	char m_sBondKey[33];
	char m_sBaseType[33];		//基础资产
	//char m_sNPL[8];				//某标识，用于与Base_Type共同判定不良资产
	char m_sTrancheClass[33];	//产品结构
	char m_sSeriesName[33];		//系列
	char m_sIssuerCode[33];		//发行人
};
